package com.mindbook.vip.gawxchatinfo.utils.result;

import javax.xml.crypto.Data;

/**
 * @NAME: wxb
 * @DATE: 2022/3/8
 **/
public class ResultUtils<T> {

    private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS";

    private static final String DEFAULT_FAIL_MESSAGE = "error";

    public Integer code;

    public String msg;

    public T t;

    public ResultEnum errEnum;




    /**
     * 请求成功
     * 统一返回请求的结果（无data数据）
     * @return
     */
    public static Result genSuccessResult(){
        Result result = new Result();
        result.setCode(ResultEnum.SUCCESS.getCode());
        result.setMsg(DEFAULT_SUCCESS_MESSAGE);
        return result;
    }



    /**
     * 请求失败
     * 统一返回请求的结果（无data数据）
     * @return
     */
    public static Result genErrorResult(){
        Result result = new Result();
        result.setCode(ResultEnum.FAIL.getCode());
        result.setMsg(DEFAULT_FAIL_MESSAGE);
        return result;
    }

    /**
     * 请求失败
     * 统一返回请求的结果（无data数据）
     * @return
     */
    public static Result genErrorResult(ResultEnum errEnum){
        Result result = new Result();
        result.setCode(errEnum.getCode());
        result.setMsg(errEnum.getMsg());
        return result;
    }

    /**
     * 请求失败
     * 统一返回请求的结果（携带错误信息）
     * @param code
     * @param msg
     * @return
     */
    public static Result genErrorResult(Integer code,String msg){
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }

    /**
     * 请求成功
     * 统一返回请求的数据（含data数据 ）
     * @param t data数据
     * @param <T>
     * @return
     */
    public static <T> DataResult genSuccessResult(T t){
        DataResult dataResult = new DataResult();
        dataResult.setCode(ResultEnum.SUCCESS.getCode());
        dataResult.setMsg(DEFAULT_SUCCESS_MESSAGE);
        dataResult.setResult(t);
        return dataResult;
    }


    /**
     * 请求成功
     * @param code 请求成功的code
     * @param msg 请求成功的信息描述
     * @param t 请求成功后返回的数据对象
     * @param <T>
     * @return
     */
    public static <T> DataResult genSuccessResult(Integer code,String msg,T t){
        DataResult dataResult = new DataResult();
        dataResult.setCode(code);
        dataResult.setMsg(msg);
        dataResult.setResult(t);
        return dataResult;
    }

    /**
     * 请求成功
     * @param code 请求成功的code
     * @param msg 请求成功的信息描述
     * @param t 请求成功后返回的数据对象
     * @param <T>
     * @return
     */
    public static <T> DataResult genSuccessResult(Integer code,String msg){
        DataResult dataResult = new DataResult();
        dataResult.setCode(code);
        dataResult.setMsg(msg);
        return dataResult;
    }

}
